# -*- coding: utf-8 -*- 
# @project : 《Atcoder》
# @Author : created by bensonrachel on 2021/8/7
# @File : （step3）A. Get together（CF）.py
def check(mid):  # 判断多个闭区间是否有交集的技巧方法。可以多个一起来，也可以一个个来，
    a = []
    b = []
    for i in range(n):
        a.append(x_[i] - mid * v_[i])
        b.append(x_[i] + mid * v_[i])
    return max(a) <= min(b)


def bi():
    l = 0  # 或-1
    r = 2 * 10 ** 9
    for _ in range(100):  # 50 过不了.Usually, you can always write 100 iterations and not think.
        mid = (l + r) / 2
        if (check(mid)):
            r = mid
        else:
            l = mid
    return r


if __name__ == "__main__":
    """
    右二分，找满足条件的最小值，即不小于的最小
    0000001111111，找最小的1。
    找最小的时间。全靠公式推导，这题。
    https://codeforces.com/edu/course/2/lesson/6/3
    x（one point）不一定是整数。时间也不一定是整数。
    """

    """
     maxi(|xi−x|/vi)≤t,要最大值小于等于t，所以即全部都要符合小于等于t，因为算全部区间是否有交集即可，即代表有存在一个汇点让所有人都能在t时间内到达这个汇点
    """
    n = int(input())
    x_ = []
    v_ = []
    for _ in range(n):
        x, v = map(int, input().split())
        x_.append(x)
        v_.append(v)
    print(bi())
